
package org.soderiakelvy.model.service;

import java.util.List;


import org.soderiakelvy.model.domain.CondicionIvaVO;
import org.soderiakelvy.model.domain.ContribucionVO;
import org.soderiakelvy.model.domain.DesProdTipoCliVO;
import org.soderiakelvy.model.domain.ProductoVO;
import org.soderiakelvy.model.domain.SujetoVO;
import org.soderiakelvy.model.domain.TipoClienteVO;

public interface SujetoServicio{
	//TODO todo los metodos para el crud
    String insertSujetoVO(SujetoVO sujeto);
    String updateSujetoVO(SujetoVO sujeto);
    String deleteSujetoVO(SujetoVO sujeto);
    SujetoVO getSujetoVO (SujetoVO sujeto);
    
    String insertTipoCliente(TipoClienteVO tipoCliente, List<DesProdTipoCliVO> productosConDescuentos);
    String updateTipoCliente(TipoClienteVO tipoCliente, List<DesProdTipoCliVO> productosConDescuentos);
    String deleteTipoCliente(TipoClienteVO tipoCliente);
    TipoClienteVO getTipoClienteById(long tipoClienteId);
    TipoClienteVO getDefaultValue();
    Boolean existeNombreTipoCliente(String nombre);

    String insertContribucionVO(ContribucionVO contribucion);
    String deleteContribucionVO(ContribucionVO contribucion);
    String updateContribucionVO(ContribucionVO contribucion);
    String insertCondicionIvaVO(CondicionIvaVO condicionIva);
    String updateCondicionIvaVO(CondicionIvaVO condicionIva);
    String deleteCondicionIvaVO(CondicionIvaVO condicionIva);
    ContribucionVO getContribucionBySujeto(SujetoVO sujeto);
    
    
    String insertDesProdTipoCliVO(DesProdTipoCliVO desProdTipoCli);
    String deleteDesProdTipoCliVO(DesProdTipoCliVO desProdTipoCli);
    String updateDesProdTipoCliVO(DesProdTipoCliVO desProdTipoCli);
    List<DesProdTipoCliVO> getProductosConDescuentoByTipoCliente(TipoClienteVO tipoCliente);
    
    String assignProductosToTipoCliente(TipoClienteVO tipoCliente, ProductoVO[] productosSeleccionados);
    
    //TODO metodos para listar
    List<SujetoVO> getAllSujetoVO();
    List<TipoClienteVO> getAllTipoClienteVO();
    List<CondicionIvaVO> getAllCondicioIvaVO();
}
